package beautify

import (
	"encoding/json"
	"gitee.com/hongzhaomin/hzm-common-go/toolkit"
)

var (
	defaultTabFmt  = NewTableFmt()
	colorfulTabFmt = NewTableFmt().SetTabFormatter(Colorful)
)

// TabPrint 表格美化输出
func TabPrint(titles []string, data any) {
	defaultTabFmt.Println(titles, data)
}

// TabPrint4Struct 表格美化输出（针对结构体切片）
func TabPrint4Struct(obj any) {
	defaultTabFmt.Println4Struct(obj)
}

// TabColorfulPrint 表格美化炫彩输出
func TabColorfulPrint(titles []string, data any) {
	colorfulTabFmt.Println(titles, data)
}

// TabColorfulPrint4Struct 表格美化炫彩输出（针对结构体切片）
func TabColorfulPrint4Struct(obj any) {
	colorfulTabFmt.Println4Struct(obj)
}

// JsonFmt 将 jsonStr 美化输出
func JsonFmt(jsonStr string) string {
	jsonMap := toolkit.Json2Map[string, any](jsonStr)
	return FmtJson(jsonMap)
}

// FmtJson 将 v 转化为 json 并美化输出
func FmtJson(v any) string {
	indent, err := json.MarshalIndent(v, "", "  ")
	if err != nil {
		panic(err)
	}
	return string(indent)
}
